Multiple threads working on various I/O requests in parallel may result in performing flush operation on the same row. Because of this, the threads may need to be serialized especially for Raid 5/6 volumes where the parity needs to be updated. Traditional caching algorithms in MegaRAID inherently require region locks to avoid data inconsistency especially for Raid 5/6 volumes. The region locks ensure that writes and reads processing is not overlapped but this, unfortunately, results in reduced performance.
In hardware accelerated caching solutions which are required to provide very high Input/output Operations Per Second (IOPS) and low latency levels required for managing high performance SSD configurations, the region locks are avoided so that reads and writes are processed concurrently. Reads to degraded volumes where there is a cache miss may involve reading all the drives in a row to rebuild the data for the missing arms. Consequently, a flush operation on the row on which a degraded read is in progress needs to be avoided.